package com.css.sword.knowing.toolkit.properties;

import java.io.File;

/**
* @author 作者 E-mail:caihx@css.com.cn
* @version 创建时间：2017年3月9日 下午5:55:32
* 
*/
public class CssJarToolUtil {
    /** 
     * 获取jar绝对路径 
     *  
     * @return 
     * jar包的绝对路径
     */  
    public static String getJarPath()  
    {  
        return getJarPath(null);  
    }  
    
    /**
     * 获取Class所在的jar路径
     * @param clazz
     * 类名称
     * @return
     * jar路径
     */
    public static String getJarPath(Class<?> clazz)  
    {  
        File file = getFile(clazz);  
        if (file == null)  
            return null;  
        return file.getAbsolutePath();  
    } 
      
    /** 
     * 获取jar目录 
     *  
     * @return 
     * 目录路径
     */  
    public static String getJarDir()  
    { 
        return getJarDir(null);  
    }  
    
    /**
     * 获取class所在jar包所在的目录
     * @param clazz
     * @return
     * 返回目录路径
     */
    public static String getJarDir(Class<?> clazz)  
    {  
        File file = getFile(clazz);  
        if (file == null)  
            return null; 
        if(file.isDirectory())
            return file.getPath();
        
        return file.getParent();  
    } 
      
    /** 
     * 获取jar包名 
     *  
     * @return 
     * 包名称
     */  
    public static String getJarName()  
    {  
        File file = getFile();  
        if (file == null)  
            return null;  
        return getFile().getName();  
    }  
      
    private static File getFile()  
    {  
        return getFile(CssJarToolUtil.class);
    } 
    
    private static File getFile(Class<?> clazz)  
    {  
        String path = "";
        // 关键是这行...  
        if(null == clazz)
            path = CssJarToolUtil.class.getProtectionDomain().getCodeSource().getLocation().getFile();
        else
            path = clazz.getProtectionDomain().getCodeSource().getLocation().getFile();
        try  
        {  
        	path = path.replaceAll("\\+", "%2B");
            path = java.net.URLDecoder.decode(path, "UTF-8"); // 转换处理中文及空格  
        }  
        catch (java.io.UnsupportedEncodingException e)  
        {
            return null;  
        }  
        return new File(path);  
    } 
}
